package org.ch02.test01.demo03;

import org.ch02.entity.Student;

import java.lang.reflect.Constructor;

/**
 * 获取某个类的 Class 对象 - 方法三
 * 对象.getClass() ：获取对象的类的Class对象
 * class对象.getSuperclass() ：获取 class 对象指向类的父类的Class对象
 *
 * @author ZQX
 * @date 2025-03-17
 */
public class MainTest01 {
    public static void main(String[] args) throws Exception {
        Student stu = new Student();

        // 1.获取 Student 类的 Class 对象
        Class<?> clazz = stu.getClass();

        // 在反射中，把类的相关信息封装为相关的对象
        // 2.获取类的构造方法对象
        Constructor<?> constructor = clazz.getConstructor();

        // 3.实例化对象
        Object obj = constructor.newInstance();

        // 4.向下转换 - 证明：反射实例化出来的确实是 Student 对象
        if(obj instanceof Student) {
            Student s = (Student)obj ;
            // 5.调用方法
            s.sayHello("张三");
        }

    }
}

